<template>
  <div class="cart_page">
    <table>
      <thead>
        <tr>
          <th style="width: 8%">
            <i :class="
              checkAll
                ? 'iconfont icon-yduifuxuankuangxuanzhong'
                : 'iconfont icon-yduifuxuankuang'
            " @click="fn"></i>
          </th>
          <th style="width: 30%">礼品信息</th>
          <th>兑换分数</th>
          <th>数量</th>
          <th>小计 (鸡腿)</th>
          <th>操作</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="item, index in arr" :key=item.id>
          <td>
            <i :class="
              checkList[index]
                ? 'iconfont icon-yduifuxuankuangxuanzhong'
                : 'iconfont icon-yduifuxuankuang'
            " @click="fn2(index)"></i>
          </td>
          <td>
            <section>
              <img width="84" :src="imgUrl + item.coverImg" alt="列表图片" />
              <div class="info">
                <h5>{{ item.title }}</h5>
                <p>{{ item.versionDescription }}</p>
              </div>
            </section>
          </td>
          <td>{{ item.coin }}鸡腿</td>
          <td>
            <div class="step">
              <span @click="fn3(-1, index)">-</span>
              <input type="text" disabled v-model="item.total" />
              <span @click="fn3(1, index)"> +</span>
            </div>
          </td>
          <td>{{ item.coin * item.total }}鸡腿</td>
          <td>
            <span class=" del" @click="fn4(item.id)">删除</span>
          </td>
        </tr>
      </tbody>
    </table>
    <div class="total">总计：<span>{{ sum }}鸡腿</span></div>
    <div class="submit">提交</div>
  </div>
</template>
<script>
import { ShopAPI, DelAPI } from "@/request/api"
import { mapActions } from "vuex";

export default {
  data() {
    return {
      stepNum: 1,
      // 全选
      checkAll: false,
      // 单选按钮数组
      checkList: [],
      // 
      arr: []
    };
  },
  methods: {
    ...mapActions({
      asyncChangeUserInfo: "userInfo/asyncChangeUserInfo"
    }),
    // 全选
    fn() {
      this.checkAll = !this.checkAll
      // 方法一
      // for (var i = 0; i < this.arr.length; i++) {
      //   this.checkList.splice(i, 1, this.checkAll)
      // }
      // 方法二
      this.checkList = this.arr.map(item => this.checkAll)
    },
    // 单选全部选,全选跟上
    fn2(index) {
      if (this.checkList[index]) {
        this.checkList.splice(index, 1, false)
      } else {
        this.checkList.splice(index, 1, true)
      }

      if (this.checkList.indexOf(false) == -1) {
        this.checkAll = true
      } else {
        this.checkAll = false
      }
    },
    // 步进器
    fn3(n, index) {
      if (n == -1 && this.arr[index].total <= 1) return
      this.arr[index].total += n
    },
    // 删除商品
    async fn4(id) {
      let res = await DelAPI(id)
      let res1 = await ShopAPI()
      this.arr = res1.data.data
      this.asyncChangeUserInfo()
    }
  },
  computed: {
    sum() {
      var sum = 0
      this.arr.forEach((item, index) => {
        if (this.checkList[index] == true)
          sum += item.coin * item.total
      })
      return sum
    }
  },
  //渲染购物车
  async created() {
    let res = await ShopAPI()
    this.arr = res.data.data
    // console.log(this.arr);
    // 给选择框增加fasle
    this.arr.forEach(item => {
      this.checkList.push(false)
    })
  }
};
</script>
<style lang="less" scoped>
.cart_page {
  background: #fff;

  table {
    width: 100%;
    border: 1px solid #e6e6e6;
    box-sizing: border-box;
    color: #666;
    border-collapse: collapse;
    font-size: 14px;

    thead {
      background: #f2f2f2;

      th {
        padding: 19px 0;

        .iconfont {
          cursor: pointer;
        }

        .icon-yduifuxuankuangxuanzhong {
          color: #0a328e;
        }
      }
    }

    tbody {
      tr {
        td {
          vertical-align: middle;
          text-align: center;
          padding: 19px 0;
          table-layout: fixed; // td的宽度固定，不随内容变化

          .iconfont {
            cursor: pointer;
          }

          .icon-yduifuxuankuangxuanzhong {
            color: #0a328e;
          }

          section {
            padding-left: 20px;
            display: flex;
            box-sizing: border-box;

            img {
              margin-right: 12px;
            }

            .info {
              padding-top: 20px;
              flex: 1;
              overflow: hidden;
              box-sizing: border-box;
              text-align: left;

              h5 {
                overflow: hidden;
                color: #333;
                font-size: 18px;
                white-space: nowrap;
                text-overflow: ellipsis;
                margin-bottom: 20px;
              }

              p {
                color: #666;
                overflow: hidden;
                white-space: nowrap;
                text-overflow: ellipsis;
              }
            }
          }

          .step {
            width: 106px;
            height: 32px;
            margin: auto;

            span {
              float: left;
              width: 30px;
              height: 32px;
              display: block;
              border: solid 1px #d1d1d1;
              font-size: 20px;
              box-sizing: border-box;
              font-weight: normal;
              font-stretch: normal;
              line-height: 30px;
              letter-spacing: 0px;
              color: #999999;
              text-align: center;
              cursor: pointer;
              background: #fff;
            }

            input {
              box-sizing: border-box;
              width: 46px;
              height: 32px;
              float: left;
              text-align: center;
              font-size: 14px;
              line-height: 23px;
              letter-spacing: 0px;
              color: #666666;
              border: 0;
              border-top: 1px solid #d1d1d1;
              border-bottom: 1px solid #d1d1d1;
              background: #fff;
            }
          }

          .del {
            border: 1px solid #ececec;
            border-radius: 4px;
            padding: 5px 10px;
            cursor: pointer;

            &:hover {
              color: #fff;
              background: #0a328e;
            }
          }
        }
      }
    }
  }

  .total {
    padding: 30px 0;
    text-align: right;
    font-size: 22px;

    span {
      font-weight: bold;
      color: #fd604d;
    }
  }

  .submit {
    width: 175px;
    height: 40px;
    text-align: center;
    line-height: 40px;
    font-family: SourceHanSansSC-Light;
    font-size: 18px;
    font-weight: normal;
    font-stretch: normal;
    letter-spacing: 0px;
    color: #ffffff;
    cursor: pointer;
    background-color: #0a328e;
    float: right;
  }
}
</style>